package com.tian.controller;

import com.tian.annotation.ArgsLogAnnotation;
import com.tian.dto.InvitedDto;
import com.tian.dto.QueryUserReqDto;
import com.tian.dto.QueryUserRespDto;
import com.tian.dto.RegisterReqDto;
import com.tian.service.UserService;
import com.tian.util.CommonResult;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * @author tianwc  公众号：java后端技术全栈、面试专栏
 * @version 1.0.0
 * @date 2023年05月11日 19:38
 * 博客地址：<a href="http://woaijava.cc/">博客地址</a>
 * <p>
 * 用户信息
 */
@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {

    @Resource
    private UserService userService;
    @Resource
    private RedissonClient redisson;

    /**
     * 通过用户手机号查询用户信息
     */
    @ArgsLogAnnotation
    @PostMapping("/findByPhone")
    public CommonResult<QueryUserRespDto> findByPhone(@RequestBody QueryUserReqDto queryUserReqDto, @RequestHeader("x-token") String token, @RequestHeader("x-msgId") String msgId) {
        log.info("x-token={},x-msgId={}", token, msgId);
        return userService.selectByPhone(queryUserReqDto);
    }

    /**
     * 注册
     *
     * @param registerReqDto 手机号 openId
     * @return 注册成功
     */
    @ArgsLogAnnotation
    @PostMapping("/register")
    public CommonResult<Long> register(@RequestBody RegisterReqDto registerReqDto) {
        return userService.add(registerReqDto);
    }

    /**
     * 通过邀请码要求用户注册
     *
     */
    @ArgsLogAnnotation
    @PostMapping("/invited/register")
    public CommonResult<Boolean> invitedRegister(@RequestBody InvitedDto invitedDto) {
        return userService.invitedRegister(invitedDto);
    }

    @GetMapping("/point/rank")
    public CommonResult pointRank() {
        return null;
    }

    @GetMapping(value = "/test")
    void test(@RequestHeader("x-token") String token, @RequestHeader("x-msgId") String msgId) {
        log.info("x-token={},x-msgId={}", token, msgId);
    }
}
